const router = require('koa-router')()
const Person = require('../dbs/models/person')
router.prefix('/users')

router.get('/', function (ctx, next) {
    ctx.body = 'this is a users response!'
})

router.get('/bar', function (ctx, next) {
    ctx.body = 'this is a users/bar response'
})

router.get('/testPost', async (ctx, next) => {
    await ctx.render('testPost')
})

router.post('/addPerson', async (ctx, next) => {
    const person = new Person({
        name: ctx.request.body.name,
        age: ctx.request.body.age
    });
    let body;
    try {
        await person.save();
        body = '保存成功:\n' + JSON.stringify(ctx.request.body)
    } catch (e) {
        console.log(e)
        body = e;
    }
    ctx.body = body
});

router.post('/getPerson', async (ctx, next) => {
    //这里使用了Person的类的静态方法(先这么说)。
    // findOne 只找到符合条件的第一条，结果是对象；
    // find找到所有符合条件的数据，结果是数组
    // const list = await Person.findOne({name:ctx.request.body.name});
    console.log(ctx.request.body)
    // 如果传参数为null或不传，则查找所有数据
    const param = Object.keys(ctx.request.body).length > 0 ? {name: ctx.request.body.name} : null
    ctx.body = await Person.find(param);
});

router.post("/updatePerson", async (ctx, next) => {
    await Person.where({
        name: ctx.request.body.name
    }).updateOne({ //只改匹配条件的第一条
        age: ctx.request.body.age
    });
    ctx.body = await Person.find();
});

// 一般禁用remove()而采用逻辑删除
router.post('/removePerson',async (ctx,next)=>{
    await Person.where({
        name:ctx.request.body.name
    }).remove() // 符合条件的全部删掉了
});


module.exports = router;
